您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

一种NUMA体系结构自适应的进程分类绑定方法

  • 申请号:CN201210242050.1 申请公布号: CN102841815B
  • 申请日: 2012-07-12 申请公布日: 2014-07-09
  • 申请(专利权)人: 专利代理机构: 北京慧泉知识产权代理有限公司
  • 分类号:G06F9/50

专利介绍

一种NUMA体系结构自适应的进程分类绑定方法,该方法有四大步骤:步骤101.对处理器核的亲近性进行初始化;步骤102.对处理器核亲近性进行探测,并根据探测结果进行归类;步骤103.遍历系统内的进程并识别用户级进程和内核级进程;步骤104.根据进程的识别结果以及处理器亲近性的探测结果进行进程分类绑定。本发明限定了内核级进程和用户级进程的可运行CPU,避免了远地访存的出现,提高了系统的效率;内核级进程和用户级进程实现了物理资源上的隔离,用户级进程的崩溃不会导致内核级进程的崩溃,提高了系统的稳定性和安全性。它在计算机操作系统技术领域里具有较好的实用价值和应用前景。
1.一种NUMA体系结构自适应的进程分类绑定方法,其特征在于:该方法包括以下步骤:步骤101.对处理器核的亲近性进行初始化;步骤102.对处理器核亲近性进行探测,并根据探测结果进行归类;步骤103.遍历系统内的进程并识别用户级进程和内核级进程;步骤104.根据进程的识别结果以及处理器亲近性的探测结果进行进程分类绑定;其中,步骤101所述的处理器核的亲近性指的是各处理器核与0号处理器核的亲近关系,处于同一处理器内部的所有处理器核,其亲近性相同;以0号处理器核为基准,各处理器核与0号处理器核的通信时间呈台阶式变化,处于同一台阶的处理器核其亲近性相同;对处理器核的亲近性进行初始化是探测处理器核的数目,并默认为所有处理器核与0号处理器核均处于相同等级的亲近性;处理器核数目的探测需要根据内核的初始化信息来确定,如果内核本身在初始化的时候没有提供相应的处理器核信息,则人为指定系统内的处理器核数目;其中,步骤102所述的对处理器核亲近性进行探测,是指对系统内所有使能的处理器核的远近关系进行探测,通过进程的通信时延差别来归类亲近性处于同一等级的处理器核;处理器核亲近性的探测将为进程的分类绑定提供绑定目标依据,其详细步骤如下:1)创建及绑定探测子进程创建与处理器核数目相等的子进程,并将每个子进程各绑定到一个处理器核上;将绑定到0号处理器核的子进程记为pid_core0,将绑定到i号处理器核的子进程记为pid_corei;2)探测子进程间通信及通信延迟计时以0号处理器核的探测子进程为基准,与其余探测子进程通过管道(pipe)建立通信,并记录通信延迟;将pid_core0与pid_corei的通信延迟记为T0-i,则pid_core0和pid_core1的通信延迟记为T0-1;再以最后一个处理器核的探测子进程为基准,与其余探测子进程通过管道建立通信并记录通信延迟;将pid_core15和pid_corei的通信延迟记为T15-i,则pid_core15和pid_core14的通信延迟记为T15-14;3)探测子进程通信计时归类对T0-1到T0-15的数据进行排序,以最小的数为基数,取每个数与基数的差值百分比,并设定一个同节点核间进程通信延迟差值百分比阈值,差值百分比在阈值以内的数据归为同一级通信延迟数据;再在剩下的数据中选取最小的数作为基数,按照上面的方法归类下一级通信延迟数据,以此类推;再将T15-14到T15-0的数据也进行排序,按照上面的方法进行数据归类处理,此处的同节点处理器核间进程通信延迟百分比阈值动态设定,龙芯上较合理的百分比阈值在10%--20%之间;4)处理器核亲近性归类根据上面的T0-1到T0-15以及T15-14到T15-0的数据分类,分别得到一个相同亲近性级别的处理器核分类,将两种分类进行合并,即得到处于同一亲近性的处理器核集合;a[0],a[1],a[2],a[3]为一个集合,a[4],a[5],a[6],a[7]为一个集合,a[8],a[9],a[10],a[11]为一个集合,a[12],a[13],a[14],a[15]为一个集合;5)探测子进程注销及返回将各个探测子进程注销并更新处理器核亲近性集合。
2.根据权利要求1所述的一种NUMA体系结构自适应的进程分类绑定方法,其特征在于:步骤103所述的遍历系统内的进程指的是遍历系统内所有进程的task_struct数据结构,通过task_struct数据结构来识别用户级进程和内核级进程;由于内核级进程关系到系统的初始化、运行中的管理以及关机功能,其将被绑定在0号处理器核所在的节点。
3.根据权利要求1所述的一种NUMA体系结构自适应的进程分类绑定方法,其特征在于:步骤104所述的进程分类绑定指的是根据用户级进程和内核级进程的识别结果,对进程的task_struct结构体中的cpus_allowed成员进行限定,从而限制其可调度范围;内核级进程限制在0号处理器核以及与0号处理器核处于相同亲近性等级的处理器核上,其余的用户级进程限制在其他的各个处于相同亲近性等级的处理器核集合中。(一)技术领域本发明涉及一种NUMA体系结构自适应的进程分类绑定方法,具体涉及一种体系结构探测技术以及基于此技术的进程分类绑定方法,它能够实现操作系统内核对体系结构的探测感知及调度性能的优化,属于计算机操作系统技术领域。(二)背景技术当前采用国产龙芯处理器的服务器中,大部分采用NUMA体系结构设计,然而现有的支持龙芯NUMA处理器的操作系统内核在调度过程中没有充分考虑到NUMA体系结构对系统性能的影响,如图1所示,内核在调度决策时在各处理器核之间随机调度进程,导致进程远地访存频繁出现,从而降低了系统的运行效率,另一方面,远地访存的频繁出现也使得系统的稳定性和安全性降低。如果在操作系统内核中对NUMA体系结构进行探测,在调度过程中充分考虑到NUMA体系结构的影响,如图2所示,将进程的调度控制在与当前进程的物理内存相近的CPU上,则可以避免远地访存的出现,提高系统的效率,同时也可以把内核级进程和用户级进程分类管理,提高系统的安全性和稳定性。综上,本发明对提高龙芯NUMA服务器操作系统的性能和稳定性有很重要的意义。(三)发明内容1、目的:本发明的目的是提供一种NUMA体系结构自适应的进程分类绑定方法,它首先通过对体系结构的探测,获知系统内CPU的分布情况,再根据探测结果对系统内的用户级进程和内核级进程进行分组绑定,限定相应进程的调度域,从而避免远地访存的出现,提高系统的性能和稳定性。2、技术方案:为达到上述目的,本发明的技术方案如下:如图3所示,本发明一种NUMA体系结构自适应的进程分类绑定方法,该方法包括以下步骤:步骤101.对处理器核的亲近性进行初始化;步骤102.对处理器核亲近性进行探测,并根据探测结果进行归类;步骤103.遍历系统内的进程并识别用户级进程和内核级进程;步骤104.根据进程的识别结果以及处理器亲近性的探测结果进行进程分类绑定。其中,步骤101所述的处理器核的亲近性指的是各处理器核与0号处理器核的亲近关系,处于同一处理器内部的所有处理器核,其亲近性相同。以0号处理器核为基准,各处理器核与0号处理器核的通信时间呈台阶式变化,处于同一台阶的处理器核其亲近性相同。对处理器核的亲近性进行初始化主要是探测处理器核的数目,并默认为所有处理器核与0号处理器核均处于相同等级的亲近性。处理器核数目的探测需要根据内核的初始化信息来确定,如果内核本身在初始化的时候没有提供相应的处理器核信息,则有必要人为指定系统内的处理器核数目。本发明在硬件条件方面,适用但不限于基于龙芯处理器的NUMA架构服务器。在软件条件方面,适用于基于Linux内核以及基于标准Linux内核裁剪的操作系统。其中,步骤102所述的对处理器核亲近性进行探测,主要是指的对系统内所有使能的处理器核的远近关系进行探测,通过进程的通信时延差别来归类亲近性处于同一等级的处理器核。处理器核亲近性的探测将为进程的分类绑定提供绑定目标依据,其详细步骤如下:1)创建及绑定探测子进程创建与处理器核数目相等的子进程,并将每个子进程各绑定到一个处理器核上。例如将绑定到0号处理器核的子进程记为pid_core0,将绑定到i号处理器核的子进程记为pid_corei。ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/>2)探测子进程间通信及通信延迟计时以0号处理器核的探测子进程为基准,与其余探测子进程通过管道(pipe)建立通信,并记录通信延迟。例如将将pid_core0与pid_corei的通信延迟记为T0-i,则pid_core0和pid_core1的通信延迟记为T0-1。再以最后一个处理器核的探测子进程为基准,与其余探测子进程通过管道建立通信并记录通信延迟。例如将pid_core15和pid_corei的通信延迟记为T15-i,则pid_core15和pid_core14的通信延迟记为T15-14。3)探测子进程通信计时归类对T0-1到T0-15的数据进行排序,以最小的数为基数,取每个数与基数的差值百分比,并设定一个同节点核间进程通信延迟差值百分比阈值,差值百分比在阈值以内的数据归为同一级通信延迟数据。再在剩下的数据中选取最小的数作为基数,按照上面的方法归类下一级通信延迟数据,以此类推。再将T15-14到T15-0的数据也进行排序,按照上面的方法进行数据归类处理。此处的同节点处理器核间进程通信延迟百分比阈值可以动态设定,龙芯上比较合理的百分比阈值在10%--20%之间。4)处理器核亲近性归类根据上面的T0-1到T0-15以及T15-14到T15-0的数据分类,分别得到一个相同亲近性级别的处理器核分类,将两种分类进行合并,即可得到处于同一亲近性的处理器核集合。例如a[0],a[1],a[2],a[3]为一个集合,a[4],a[5],a[6],a[7]为一个集合,a[8],a[9],a[10],a[11]为一个集合,a[12],a[13],a[14],a[15]为一个集合。5)探测子进程注销及返回将各个探测子进程注销并更新处理器核亲近性集合。其中,步骤103所述的遍历系统内的进程指的是遍历系统内所有进程的task_struct数据结构。通过task_struct数据结构来识别用户级进程和内核级进程。由于内核级进程关系到系统的初始化、运行中的管理以及关机等功能,其将被绑定在0号处理器核所在的节点。其中,步骤104所述的进程分类绑定指的是根据用户级进程和内核级进程的识别结果,对进程的task_struct结构体中的cpus_allowed成员进行限定,从而限制其可调度范围。内核级进程限制在0号处理器核以及与0号处理器核处于相同亲近性等级的处理器核上,其余的用户级进程限制在其他的各个处于相同亲近性等级的处理器核集合中。3、优点及功效:本发明是一种NUMANUMA体系结构自适应的进程分类绑定方法,它与现有技术相比,其主要优点如下:(1)限定了内核级进程和用户级进程的可运行CPU,避免了远地访存的出现,提高了系统的效率;(2)内核级进程和用户级进程实现了物理资源上的隔离,用户级进程的崩溃不会导致内核级进程的崩溃,提高了系统的稳定性和安全性。(四)附图说明图1改进前的NUMA体系结构上的进程调度示意图图2改进后的NUMA体系结构上的进程调度示意图图3为本发明的体系结构自适应的进程绑定方法总体流程图图4为本发明的体系结构自适应探测方法流程图(五)具体实施方式为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明的主要思想是通过进程的通信时延或者访存时延来获取系统内处理器核的分布,进而对处理器核的亲近性进行分类。通过对处理器核的亲近性分类以及对用户级进程和内核级进程的识别,分别将其限制在处于同一亲近性的处理器核集合中,从而避免远地访存的出现,并实现用户级进程和内核级进程在物理资源上的隔离,从而提高系统的性能和稳定性。见图1、图2、图3及图4,本发明一种NUMA体系结构自适应的进程分类绑定方法,该方法包括以下步骤:步骤201:探测处理器核数目,初始化处理器核亲近关系数组。在内核的init进程初始化完成之后,对系统内处理器核的亲近性进行初始化。具体步骤为:探测系统内的处理器核数目,初始化一个与处理器核数目相等长度的数组,数组元素的序号代表相应的处理器核,而数组元素的值代表与0号处理器核的亲近关系权值,具有相同权值的处理器核将被视为同一调度类。下面以系统内具有16个处理器核为例.则建立一个数组长度为16的数组a[i](i=0--15),其中i代表第i个处理器核,a[i]的值代表第i个处理器核与0号处理器核的亲近关系,a[0]=0.步骤202-1:创建及绑定探测子进程创建与处理器核数目相等的子进程,并将每个子进程各绑定到一个处理器核上。例如将绑定到0号处理器核的子进程记为pid_core0,将绑定到i号处理器核的子进程记为pid_corei。ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/>步骤202-2:探测子进程间通信及通信延迟计时以0号处理器核的探测子进程为基准,与其余探测子进程通过管道(pipe)建立通信,并记录通信延迟。例如将将pid_core0与pid_corei的通信延迟记为T0-i,则pid_core0和pid_core1的通信延迟记为T0-1。再以最后一个处理器核的探测子进程为基准,与其余探测子进程通过管道建立通信并记录通信延迟。例如将pid_core15和pid_corei的通信延迟记为T15-i,则pid_core15和pid_core14的通信延迟记为T15-14。步骤202-3:探测子进程通信计时归类对T0-1到T0-15的数据进行排序,以最小的数为基数,取每个数与基数的差值百分比,并设定一个同节点核间进程通信延迟差值百分比阈值,差值百分比在阈值以内的数据归为同一级通信延迟数据。再在剩下的数据中选取最小的数作为基数,按照上面的方法归类下一级通信延迟数据,以此类推。再将T15-14到T15-0的数据也进行排序,按照上面的方法进行数据归类处理。此处的同节点处理器核间进程通信延迟百分比阈值可以动态设定,龙芯上比较合理的百分比阈值在10%--20%之间。步骤202-4:处理器核亲近性归类根据上面的T0-1到T0-15以及T15-14到T15-0的数据分类,分别得到一个相同亲近性级别的处理器核分类,将两种分类进行合并,即可得到处于同一亲近性的处理器核集合。例如a[0],a[1],a[2],a[3]为一个集合,a[4],a[5],a[6],a[7]为一个集合,a[8],a[9],a[10],a[11]为一个集合,a[12],a[13],a[14],a[15]为一个集合。步骤202-5:探测子进程注销及返回将各个探测子进程注销并更新处理器核亲近性集合。步骤203:系统内进程遍历及识别可以通过类似于list_for_each_entry(p,&task->tasks,tasks)或者for_each_process(task)等宏实现系统进程的遍历。通过判断task->mm成员是否为空可以对内核级进程和用户及进程进行区分,内核级进程的task->mm成员为空。步骤204:进程的分类绑定将识别出的内核进程通过类似于set_affinity的函数将其绑定在0号处理器核所在的集合中。而将识别出的用户级进程绑定到其他的某个处理器核集合中,可以设定一个标志位来记录上一次用户级进程分配的处理器核集合,并在下一次对用户级进程绑定时分配另一个处理器核集合并更新相应的标志位,从而避免某一个处理器核集合内的用户级进程过多。本实例中体系结构的感知是通过创建探测子进程并通过管道通信延迟来判断处理器的分布,实际中也可以通过创建探测子进程对系统内存进行访问,通过此访存延迟来判断处理器的分布情况。采用此发明可以有效地避免NUMA结构上的远地访存出现,也可以实现用户级进程和内核级进程在物理资源上的隔离,充分提高系统效率,提升系统稳定性。最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。